﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using PDS_ANDU.Controles;
using System.Text.RegularExpressions;

namespace PDS_ANDU.GUI
{
    public partial class RegistrarUsuario : Form
    {
        public RegistrarUsuario()
        {
            InitializeComponent();
        }

        private void RegistrarUsuario_Load(object sender, EventArgs e)
        {
            // ubica la ventana centrada respecto al MdiParent
            this.Location = new Point(this.MdiParent.ClientSize.Width / 2 - this.Width / 2, this.MdiParent.ClientSize.Height / 2 - this.Height / 2);
        }

        private void button1_Click(object sender, EventArgs e)
        {
            ControlUsuario controlUsuario = new ControlUsuario();
            char sexo;

            try
            {
                validarNombreUsuario();
                validarClaves();
                validarNombre();
                validarApellido();
                sexo = validarSexo();
                validarCiudad();
                validarProvincia();
                validarPais();
                email_bien_escrito();

                controlUsuario.registrarUsuario(textBox1.Text, textBox2.Text, textBox4.Text, textBox5.Text, textBox6.Text, sexo, dateTimePicker1.Value, textBox7.Text, textBox8.Text, textBox9.Text);

                MessageBox.Show("¡Felicitaciones! Suscriptor registrado exitosamente", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Information);
                
                //Cerramos la ventana y mostramos el Login para el ingreso del suscriptor creado
                this.Close();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }

        }

        private void validarNombreUsuario()
        {
            if (textBox1.Text.Length < 1 || textBox1.Text.Length > 39)
            {
                textBox1.Focus();
                throw new Exception("La longitud del nombre de usuario no es válida (1 a 39 caracteres)");
            }   
        }

        private void validarClaves()
        {
            if (textBox2.Text.Length < 1 || textBox2.Text.Length > 39)
            {
                textBox2.Focus();
                throw new Exception("La longitud de la contraseña no es válida (1 a 39 caracteres)");
            }
            if (textBox2.Text != textBox3.Text)
            {
                textBox2.Text = "";
                textBox3.Text = "";
                textBox2.Focus();
                throw new Exception("Las contraseñas no coinciden");
            }
        }

        private void validarNombre()
        {
            if (textBox4.Text.Length < 1 || textBox4.Text.Length > 39)
                throw new Exception("La longitud del nombre no es válida (1 a 39 caracteres)");
        }

        private void validarApellido()
        {
            if (textBox5.Text.Length < 1 || textBox5.Text.Length > 39)
            {
                textBox5.Focus();
                throw new Exception("La longitud del apellido no es válida (1 a 39 caracteres)");
            }
        }

        private char validarSexo()
        {
            if (radioButton1.Checked)
                return 'M';
            else
                if (radioButton2.Checked)
                    return 'F';
                else
                    throw new Exception("No se ha seleccionado el sexo");
        }

        private void validarCiudad()
        {
            if (textBox7.Text.Length < 1 || textBox7.Text.Length > 39)
            {
                textBox7.Focus();
                throw new Exception("La longitud de la ciudad no es válida (1 a 39 caracteres)");
            }
        }

        private void validarProvincia()
        {
            if (textBox8.Text.Length < 1 || textBox8.Text.Length > 39)
            {
                textBox8.Focus();
                throw new Exception("La longitud de la provincia no es válida (1 a 39 caracteres)");
            }
        }

        private void validarPais()
        {
            if (textBox9.Text.Length < 1 || textBox9.Text.Length > 39)
            {
                textBox9.Focus();
                throw new Exception("La longitud del pais no es válida (1 a 39 caracteres)");
            }
        }

        private void email_bien_escrito()
        {
            String email = textBox6.Text;
            String expresion;
            expresion = "\\w+([-+.']\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*";
            if (Regex.IsMatch(email, expresion))
            {
                if (!(Regex.Replace(email, expresion, String.Empty).Length == 0))
                {
                    textBox6.Focus();
                    throw new Exception("El formato de email no es correcto");
                }
            }
            else
            {
                textBox6.Focus();
                throw new Exception("El formato de email no es correcto");
            }
        }

        private void button2_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void RegistrarUsuario_FormClosed(object sender, FormClosedEventArgs e)
        {
            // crea la instancia de ventana
            Login ventana = new Login();
            // asigna el MdiParent
            ventana.MdiParent = this.MdiParent;
            // abra la ventana nueva
            ventana.Show();
        }
    }
}
